using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using formatacao;

namespace WindowsFormsApplication2 {

	//Desenvolvido e implementado por Andre Fernandes Rocha Sales
	
	class Regra3 : Regras
	{
	
		//public string[,] priMatriz;

        public /*string[,]*/void getMatriz(string[] lines, string[,] priMatriz, int linha)
		{
			//priMatriz = new string[lines.Length, 95];
			//priMatriz = new string [1,1];
			string troca;
			int coLines = 0;
			StringBuilder auxTroca = new StringBuilder();
            format formatar = new format();

			for(int coluna = 0; coluna < 95; coluna++)
				{
					switch(coluna)
					{
						//Tipo Registro
						case 0:
								troca = lines[linha][coluna].ToString();
								priMatriz[linha,coluna] = troca;
								break;
						//Controle Sequencial de Gravacao
						case 1:
								for(coLines = 1; coLines <=12; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//Data de Vencimento
						case 9:
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 13; coLines <= 20; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = formatar.data(troca);
								break;
						//Data de Emissao
						case 10:
							
								auxTroca.Remove(0,auxTroca.Length);
								
								for(coLines = 21; coLines <= 28; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
                                priMatriz[linha, coluna] = formatar.data(troca);
								break;
						//Identificador Unico do Recurso (NRC)
						case 11:
						
								auxTroca.Remove(0,auxTroca.Length);
								
								for(coLines = 29; coLines <= 53; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//CNL do Recurso em Referencia
						case 12:
						
								auxTroca.Remove(0,auxTroca.Length);
								
								for(coLines = 54; coLines <= 58; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//DDD
						case 14:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 59; coLines <= 60; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//Numero do Telefone
						case 15:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 61; coLines <= 70; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//Caracteristica do Recurso
						case 18:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 71; coLines <= 85; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//Degrau do Recurso (Quando LP)
						case 19:
								
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 86; coLines <= 87; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//Data da Ligacao
						case 54:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 88; coLines <= 95; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
                                priMatriz[linha, coluna] = formatar.data(troca);
								break;
						//CNL da Localidade Chamada
						case 55:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 96; coLines <= 100; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Nome da Localidade Chamada
							case 56:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 101; coLines <= 125; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//UF do Telefone chamado	
							case 57:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 126; coLines <= 127; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Codigo Nacional/Internacional
							case 58:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 128; coLines <= 129; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Codigo da Operadora
							case 59:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 130; coLines <= 131; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Descricao da Operadora
							case 60:
					
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 132; coLines <= 151; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Cod do Pais chamado	
							case 61:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 152; coLines <= 154; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Area/DDD	
							case 62:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 155; coLines <= 158; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Numero do Telefone Chamado
							case 63:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 159; coLines <= 168; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Conjugado do Numero do Telefone chamado
							case 64:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 169; coLines <= 170; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Duracao da Ligacao	
							case 65:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 171; coLines <= 176; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();                                
								priMatriz[linha, coluna] = formatar.deci(troca,1);
								break;
							//Categoria
							case 66:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 177; coLines <= 179; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Descricao da Categoria	
							case 67:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 180; coLines <= 229; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Horario da Ligacao	
							case 68:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 230; coLines <= 235; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Tipo de Chamada (TC)
							case 69:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 236; coLines <= 236; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Grupo Horario Tarifario		
							case 70:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 237; coLines <= 237; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Descricao do Horario Tarifario	
							case 71:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 238; coLines <= 262; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Degrau da Ligacao	
							case 72:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 263; coLines <= 264; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Sinal do Valor da Ligacao	
							case 73:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 265; coLines <= 265; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
							//Aliquota ICMS	
							case 74:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 266; coLines <= 270; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = formatar.deci(troca,2);
								break;
							//Valor da Ligacao com impostos
							case 75:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 271; coLines <= 283; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
                                priMatriz[linha, coluna] = formatar.deci(troca,2);
								break;
							//Classe de servico	
							case 76:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 284; coLines <= 288; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
					/*		//Filler	
							case 92:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 289; coLines <= 349; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break; */
                            default:
                                priMatriz[linha, coluna] = "";
                                break;
					}
				}
			
								
			//return priMatriz;
		}
		
	}
	
}